#include<iostream> 
#include<string>

using namespace std;
using std::string;

/*
  first we declare our new namespace and its interfaces
*/
namespace free_for_all
{
  /*
    The declaration is in this scope like putting it into a header-file.
   */
  void new_void(void);
  void new_str(string);
  int byebye(void);
}
/*
  then we declare what these interfaces with the namespace actually do.
*/
void free_for_all::new_void()
{
  cout << "this is is a void it just runs " << endl;
}

void free_for_all::new_str(string args)
{
  /*
    The declaration step with the + "" is needed to get no scary 
    exceptions about logic erors
   */
  cout << args.c_str() << endl;
  cout << "this was an argument for new_str" << endl;

}

int free_for_all::byebye()
{
  return 0;
}

/*
  then we call them in the main procedure. with the namespace
  preliminary written.
*/
int main(int argc, char* argv[])
{
    string str = " ";
    if (sizeof(argv[1]) < 1)
    {
      
    }
  else
    {
      str = argv[1];
    }

  
  free_for_all::new_void();
  free_for_all::new_str(str);
  return free_for_all::byebye();
}
